// 引入vue
import Vue from 'vue';
// 引入插件
import VueRouter from 'vue-router';
// 使用插件
Vue.use(VueRouter);

// 暴露VueRouter类

// export default new VueRouter({


// });

//注意: 重写push||replace方法,最终实现路由跳转与传递参数,
// 起始还是用人家原来的push方法

// 先把人家原有备份一份--原始push
let originPush = VueRouter.prototype.push;

// 重写push方法
VueRouter.prototype.push = function (location, resolve, reject) {
    // 面试题:call和apply区别?
    // 相同点:都可以让当前函数执行一次
    // 不同点:call传递参数用 ,隔开 apply,传递参数数组
    // call第一个参数:this
    if (resolve && reject) {
        originPush.call(this, location, resolve, reject);
    } else {
        originPush.call(this, location, () => { }, () => { });
    }
};


// 备份原始replace
let originReplace = VueRouter.prototype.replace;

//重写replace方法
VueRouter.prototype.replace = function (location, resolve, reject) {
    if (resolve && reject) {
        originReplace.call(this, location, resolve, reject);
    } else {
        originReplace.call(this, () => { }, () => { })
    }
}
import routes from './routes'
// 箭头函数
const withRouter = () => {
    return new VueRouter({
        //一个路由器:管理多的路由
        routes,
        //滚动行为:当路由进行切换跳转的时候，可以设置滚动条的位置
        scrollBehavior() {
            //这里可以设置x轴，目前咱们项目没有x轴
            return { y: 0 };
        }
    });
}
export default withRouter();